/*lic*/
#ifndef __BSP_MODULE_ML307RDC_MODULE_H__
#define __BSP_MODULE_ML307RDC_MODULE_H__
#include "BspHelper.h"

#include <rtthread.h>

/* 配置常量 */
// 禁止模块休眠。0为禁止休眠。1为允许浅睡眠。2为正常允许深睡眠
#define SLEEP_MODULE 0

// 客户端编号。注意不是ClientID,模块支持6个mqtt客户端。这里是0-5的编号
#define MQTT_CID 1
#define MQTT_HOST "www.fjqper.com"
//#define MQTT_HOST "dmp-mqtt.cuiot.cn"
#define MQTT_PORT 1883

#define MQTT_KEEPALIVE 120

#define SSL 0

#define PRODUCT_KEY "cu1vj95wvfhbn8tr"
#define PRODUCT_SECRET "b8dc7d0160cec22127c7199c91782836"
#define DEVICE_KEY "0G9gAJ1IcdIpOWA"
#define DEVICE_ID "898604F2102371499396"

//#define MQTT_USERNAME DEVICE_KEY ## "|" ## PRODUCT_KEY
//// 使用hmac256算法加密后的数据
//#define MQTT_PASSWORD "ecced7613ed82950bb3d8e14142b084536f65c975e394e0dd8f0a115ce160200"

#define MQTT_USERNAME "ioufev"
// 使用hmac256算法加密后的数据
#define MQTT_PASSWORD "ioufev"

#define CLIENT_ID DEVICE_ID ## "|" ## PRODUCT_KEY ## "|0|0|2"

/* 主要主题 */
// 注册信息主题
#define DOWN_REGISTER "$sys/" ## PRODUCT_KEY ## "/" ## DEVICE_KEY ## "/ext/regist"

// 信息上报主题
#define DATA_URL "$sys/" ## PRODUCT_KEY ## "/" ## DEVICE_KEY ## "/0G9gAJ1IcdIpOWA/property/batch"
#define DATA_URL_REPLY "$sys/" ## PRODUCT_KEY ## "/" ## DEVICE_KEY ## "/0G9gAJ1IcdIpOWA/property/batch_reply"

/* 主要主题 */

/* 配置常量 */

/** !\brief 网络状态变量
* 
*/
// 模块开机状态
extern uint8_t lte_status;
// 驻网状态
extern uint8_t lte_connected;
// mqtt连接状态
extern uint8_t mqtt1_status;

// 客户端ID
extern char mqtt_client_id[128];
// ntp对时状态
extern uint8_t sntp_ok;

// 网络状态变量

/* 控制信号量 */
// 创建用于LTE串口发送的信号量
extern rt_sem_t mqtt_usart_tx_sem;
extern rt_sem_t mqtt_message_tx_sem;
/* 控制信号量 */

/* 控制事件集 */
// NTP对时控制
// NTP控制事件集
#define NTP_FINISHED (1 << 0)
/* 控制事件集 */

/* 消息邮箱 */
extern struct rt_messagequeue mqtt_usart_tx_msq;
extern struct rt_messagequeue mqtt_usart_rx_msq;
extern struct rt_messagequeue mqtt_tx_msq;
extern struct rt_messagequeue mqtt_rx_msq;
extern struct rt_messagequeue mqtt_message_tx_msq;
extern struct rt_messagequeue mqtt_message_rx_msq;
/* 消息邮箱 */

/* 缓冲区 */
extern char mqtt_usart_rx_buf[1536];
extern char mqtt_usart_tx_buf[1536];
extern char mqtt_message_rx_buf[1536];
extern char mqtt_message_tx_buf[1536];
// mqtt缓冲区
extern rt_uint8_t mqtt_message_rx_msq_pool[16384];
extern rt_uint8_t mqtt_message_tx_msq_pool[16384];
/* 缓冲区 */

/* 定义消息结构体 */
typedef struct __Tag_Send_Message_Params_Def {
	char message_id[128];
	
}Send_Message_Params_Def;

typedef struct __Tag_Send_Message_Object_Def {
	char message_id[128];
	Send_Message_Params_Def *obj_list[16];
	
}Send_Message_Object_Def;
/* 定义消息结构体 */


// 启动网络任务
void Run_Net_Task(void);
// 初始化4G
void Init_Lte(void);

#endif /* __BSP_MODULE_ML307RDC_MODULE_H__ */

/*eof*/
